export function renderMixin(Vue) {

  //创建虚拟节点
  Vue.prototype._c = function () {
    return createElement(...arguments)//创建标签
  }

  //创建文本虚拟节点
  Vue.prototype._v = function (text) {
    return createText(...arguments)
  }

  //变量
  Vue.prototype._s = function (val) {
    // console.log('........', val);  //为什么此处已经将变量转换为了值
    return val == null ? '' : (typeof val === 'object' ? JSON.stringify(val) : val)
  }

  Vue.prototype._render = function () { //将render函数变成vnode
    let vm = this;
    let render = vm.$options.render; //获取render函数
    let vnode = render.call(vm);  // 调用render函数，创建虚拟dom，虚拟dom与render函数很相似
    console.log('我是虚拟DOMvnode-------', vnode);
    return vnode; //返回虚拟节点
  }
}

//创建元素
export function createElement(tag, data = {}, ...children) {
  return vnode(tag, data, data.key, children)
}
//创建文本
export function createText(text) {
  return vnode(undefined, undefined, undefined, undefined, text)
}


//创建vnode
export function vnode(tag, data, key, children, text) {
  return {
    tag,
    data,
    key,
    children,
    text
  }
}